﻿#define _CRT_SECURE_NO_WARNINGS 1

////strcmp的模拟实现
//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//
//int my_strcmp(const char* str1, const char* str2)
//{
//	assert(str1 != NULL && str2 != NULL);
//	while (*str1 == *str2)
//	{
//		if (*str1 == '\0')
//			return 0;
//		str1++;
//		str2++;
//	}
//	return *str1 - *str2;
//}
// 
//int main()
//{
//	char str1[] = "abcdef";
//	char str2[] = "abc";
//
//	//int ret = strcmp(str1, str2);
//	int ret = my_strcmp(str1, str2);
//	printf("%d\n", ret);
//
//	return 0;
//}



////strncpy 函数的使⽤
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char str1[] = "abcdef";
//	char str2[20] = "xxxxxxxxxxxx";
//
//	strncpy(str2, str1, 8);
//	printf("%s\n", str2);
//
//	return 0;
//}


////strncat 函数的使⽤
//#include<stdio.h>
//
//int main()
//{
//	char str1[20] = "abc\0xxxxx";
//	char str2[] = "abcdef";
//
//	strncat(str1, str2, 3);
//	printf("%s\n", str1);
//
//	return 0;
//}


////strncmp函数的使⽤
//#include<stdio.h>
//#include<string.h>
//
//int main()
//{
//	char str1[] = "abchefg";
//	char str2[] = "abcddg";
//
//	int ret = strncmp(str1, str2, 4);
//	printf("%d\n", ret);
//
//	return 0;
//}


////strstr的使用与模拟实现
//#include<stdio.h>
//#include<string.h>
//#include<assert.h>
//char* my_strstr(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//	const char* s1 = NULL;
//	const char* s2 = NULL;
//	const char* cur = str1;
//
//	if (*str2 == '\0')
//		return (char*)str1;
//
//	while (*cur != '\0')
//	{
//		s1 = cur;
//		s2 = str2;
//		while (*s1 == *s2 && *s2 != '\0')
//		{
//			s1++;
//			s2++;
//		}
//		if (*s2 == '\0')
//			return (char*)cur;
//		cur++;
//	}
//	return NULL;
//}
//
//int main()
//{
//	char str1[] = "abbbcdef";
//	char str2[] = "bbc";
//
//	//char* ret = strstr(str1, str2);
//	char* ret = my_strstr(str1, str2);
//	printf("%s\n", ret);
//
//	return 0;
//}



////strtok 函数的使⽤
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//	char str[] = "JhongLee@yeah.com";
//	char tmp[20];
//	strcpy(tmp, str);
//	printf("%s\n", tmp);
//	char* sep = "@.";
//	char* ret = NULL;
//	for (ret = strtok(str, sep);ret != NULL;ret = strtok(NULL,sep))
//	{
//		printf("%s\n", ret);
//	}
//
//
//	return 0;
//}


//strtok 函数的使⽤
 

//#include<stdio.h>
//#include<string.h>
//#include<errno.h>
//
//int main()
//{
//	int i = 0;
//	for (i = 0; i <= 10; i++)
//	{
//		printf("%d: %s\n", i, strerror(i));
//	}
//
//	return 0;
//}


//strerror 函数的使⽤

#include<stdio.h>
#include<string.h>
#include<errno.h>

//int main()
//{
//	//1.fopen以读的形式打开文件,如果文件不存在,打开失败
//	FILE* pfile = fopen("test.txt", "r");
//
//	if (pfile == NULL)
//	{
//		printf("error:%s\n", strerror(errno));
//		return;
//	}
//
//	//2.文件操作
//
//	//3.关闭文件
//	fclose(pfile);
//
//	return 0;
//}


//了解⼀下 perror 函数
int main()
{
	//1.fopen以读的形式打开文件,如果文件不存在,打开失败
	FILE* pfile = fopen("test.txt", "r");

	if (pfile == NULL)
	{
		perror("error");
		return;
	}

	//2.文件操作

	//3.关闭文件
	fclose(pfile);

	return 0;
}
